﻿using System.Collections.Generic;
using System.Linq;
using HamcoWcs.Tools.Tibco.Entities;

namespace HamcoWcs.Tools.Tibco.MesMsgService
{
    public interface IMesMsgParserFactory
    {
        IEnumerable<IMesMsgParser> Parsers { get; }

        IMesMsgParser GetParser(EnumMesMsgStatus status);
    }

    public interface IMesMsgParser
    {
        EnumMesMsgStatus Status { get; }
        void HandleEvent(MesMsgQueue message, Context context);
    }

    public class MesMsgParserFactory : IMesMsgParserFactory
    {

        public MesMsgParserFactory()
        {
            Parsers = new List<IMesMsgParser>()
            {
                new MesMsgParser_WcsWaitSend(),
                new MesMsgParser_WcsReSend(),
                new MesMsgParser_WcsExcuted(),
            };
        }


        public IEnumerable<IMesMsgParser> Parsers { get; }


        public IMesMsgParser GetParser(EnumMesMsgStatus status)
        => Parsers.FirstOrDefault(p => p.Status == status);
    }
}
